
#ifndef __STACK_BASE_LIST__

#define __STACK_BASE_LIST__


/*节点*/
typedef struct StackNode
{
    int data;/*数据*/
    struct StackNode *next;/*后继节点指针*/
}STACK_NODE;

/*堆栈*/
typedef struct Stack
{
    STACK_NODE *top; /*栈顶*/
}STACK;

/*创建节点*/

STACK_NODE *node_create(int data, STACK_NODE *next);

/*销毁节点*/
STACK_NODE *node_destroy(STACK_NODE *node);

/*创建*/
STACK *stack_create(void);

/*销毁*/
void stack_destroy(STACK *stack);

/*压入*/
void stack_push(STACK *stack, int data);

/*弹出*/
int stack_pop(STACK *stack);

/*返回栈顶元素*/
int stack_top(STACK *stack);

/*清空*/
void stack_clear(STACK *stack);

/*栈大小*/
int stack_size(STACK *stack);

/*判满*/
int stack_full(STACK *stack);

/*判空*/
int stack_empty(STACK *stack);

#endif
